Technical Field
This disclosure relates generally to processors, and, more specifically, to distributing workloads between processors or cores within a processor.
Description of the Related Art
To improve computational performance, processors may implement a variety of techniques to perform tasks concurrently. A modern processor may be pipelined and/or multithreaded, include multiple cores, and be one of several processors included with a single computer system. Some processors are also specialized for various tasks, such as graphics processors, digital signal processors (DSPs), etc. In order to encourage usage of these various capabilities, several “domain-specific” languages have been developed to facilitate the distribution of workloads among all of these different, heterogeneous resources. Examples of such languages include OPENCL, CUDA, and DIRECT COMPUTE.
Application developers can be discouraged from using domain-specific languages because these languages use a different programming paradigm than heavily adopted object-oriented programming (OOP) languages such as PYTHON, RUBY, JAVA, C++, C#, etc. Domain-specific languages typically use a data-parallel paradigm, in which software is developed around the creation of sets of executable code (e.g., called “kernels” in OPENCL) that can operate on large quantities of data in a parallel. OOP, on the other hand, uses a paradigm, in which software is developed around “objects,” which are units of associated data and methods to manipulate that data. In many instances, the data-parallel paradigm supported by domain-specific languages can be somewhat contrary to the object-oriented paradigm.